package it.patterns.creational.builder;

/**
 * Separate the construction of a complex object from its representation so that
 * the same construction process can create different representations. A
 * Composite is what a builder often builds.
 * 
 * It lets you vary a product's internal representation.
 * 
 * It isolates code for construction and representation.
 * 
 * It gives you finer control over the construction process.
 * 
 * <ul>
 * <li>the algorithm for creating a complex object should be independent of the
 * parts that make up the object and how they are assembled.</li>
 * <li>the construction process must allow different representations for the
 * object that is constructed</li>
 * </ul>
 * 
 * <img src="Builder.jpg" alt="Pattern Structure"/>
 * 
 * @author Luca D'Onofrio
 * 
 * @category Creational Pattern
 * @see "Design Patterns - Element of Reusable Object Oriented Software (Gamma,Helm, Johnson, Vlissides)"
 * 
 * @version 1.0
 * 
 */
public abstract class Builder {
	protected String product = new String();

	public void BuildPartA() {
	};

	public void BuildPartB() {
	};

	public void BuildPartC() {
	};

	public abstract Object getResult();
}
